今天來解看看挑戰題吧,首先是第3步的題目,題目希望我們可以用XXE的方式列出root目錄下的資料夾。首先先在留言欄輸入test試試看,利用ZAP來攔截訊息,發現瀏覽器是利用XML架構將我們輸入的文字傳送出去。
既然如此,我們就可以利用XXE的原理讓伺服器做點事情。首先我們先在欄位裡隨便輸入個東西並用ZAP攔截,接著對於攔截的內容進行修改,我們讓text標籤裡的內容改為一個叫做「&xxe;」的實體,並自己寫一段描述,讓這個實體的內容顯示出的會是系統的資料夾列表。
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE comment [
<!ELEMENT comment (#PCDATA)>
<!ENTITY xxe SYSTEM "file:///">
]>
<comment> <text>&xxe;</text></comment>
接著我們就發現root底下的資料夾被列出來啦~這一題也就如此成功過關了!
如果跟我一樣對於XML結構算是初學者或不大熟的話,可以參考下列網址,學習XML DTD的相關內容,以及Elements及Entities等是如何使用的:https://www.w3schools.com/xml/xml_dtd_intro.asp 。這次多花了一點時間學習XML的架構,雖然導致文章寫得很慢,不過很有收穫呢!